
// pages/my/my.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    userInfo: {
      avatarUrl: '/assets/images/profile/项羽.jpg',
      nickName: '微信用户',
      wxid: 'wxid_xxxxxxxx'
    },
    showAuthMask: false, // 控制授权蒙层显示
    isLoading: false, // 加载状态
    avatarFadeIn: true // 控制头像渐显动画，默认为true确保初始头像可见
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 从本地存储中获取用户信息
    const userInfo = wx.getStorageSync('userInfo');
    if (userInfo) {
      this.setData({
        'userInfo.nickName': userInfo.nickName || this.data.userInfo.nickName,
        'userInfo.avatarUrl': userInfo.avatarUrl || this.data.userInfo.avatarUrl
      });
    }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  // 处理头像点击
  handleAvatarClick() {
    // 跳转到login页面
    wx.navigateTo({
      url: '/pages/login/login'
    });
    
    // 如果用户已经设置了自定义头像，不再调用getUserProfile
    if (this.data.userInfo.avatarUrl && !this.data.userInfo.avatarUrl.includes('/assets/images/profile/')) {
      return;
    }
    
    // 显示授权蒙层
    this.setData({ showAuthMask: true });
    
    // 获取用户信息
    wx.getUserProfile({
      desc: '用于显示您的头像', // 声明获取用户个人信息后的用途
      lang: 'zh_CN', // 使用中文
      success: (res) => {
        // 先设置加载状态和隐藏头像
        this.setData({ 
          isLoading: true,
          avatarFadeIn: false
        });
        
        // 使用微信小程序的getImageInfo API预加载图片
        wx.getImageInfo({
          src: res.userInfo.avatarUrl,
          success: () => {
            // 头像加载完成后，更新头像并触发渐显动画
            setTimeout(() => {
              this.setData({
                'userInfo.avatarUrl': res.userInfo.avatarUrl,
                isLoading: false
              }, () => {
                // 短暂延迟后显示头像，触发渐显动画
                setTimeout(() => {
                  this.setData({ avatarFadeIn: true });
                }, 50);
              });
            }, 200);
          },
          fail: () => {
            this.setData({ 
              isLoading: false,
              avatarFadeIn: true
            });
          }
        });
        
        // 保存用户信息到本地存储
        const storedUserInfo = wx.getStorageSync('userInfo') || {};
        storedUserInfo.avatarUrl = res.userInfo.avatarUrl;
        wx.setStorageSync('userInfo', storedUserInfo);
      },
      fail: (err) => {
        console.log('获取用户头像失败：', err);
      },
      complete: () => {
        // 隐藏授权蒙层
        this.setData({ showAuthMask: false });
      }
    });
  },

  // 处理昵称点击
  handleNicknameClick() {
    // 如果用户已经设置了昵称，不再调用getUserProfile
    if (this.data.userInfo.nickName !== '微信用户') {
      return;
    }
    
    // 显示授权蒙层
    this.setData({ showAuthMask: true });
    
    // 获取用户信息
    wx.getUserProfile({
      desc: '用于显示您的昵称', // 声明获取用户个人信息后的用途
      lang: 'zh_CN', // 使用中文
      success: (res) => {
        // 立即更新昵称
        this.setData({
          'userInfo.nickName': res.userInfo.nickName
        });
        
        // 保存用户信息到本地存储
        const storedUserInfo = wx.getStorageSync('userInfo') || {};
        storedUserInfo.nickName = res.userInfo.nickName;
        wx.setStorageSync('userInfo', storedUserInfo);
      },
      fail: (err) => {
        console.log('获取用户昵称失败：', err);
      },
      complete: () => {
        // 隐藏授权蒙层
        this.setData({ showAuthMask: false });
      }
    });
  },

  /**
   * 点击功能项
   */
  tapFunctionItem(e) {
    const itemName = e.currentTarget.dataset.name;
    switch(itemName) {
      case '人脸识别':
        wx.navigateTo({ url: '/pages/Face/Face' });
        break;
      case '简历':
        wx.navigateTo({ url: '/pages/card/card' });
        break;
      case '朋友圈':
        wx.navigateTo({ url: '/pages/circle/circle' });
        break;
      case '视频号':
        wx.navigateTo({ url: '/pages/video/video' });
        break;
      case '表情':
        wx.navigateTo({url: '/pages/meme/meme' });
        break;
      default:
        wx.showToast({
          title: '点击了' + itemName,
          icon: 'none'
        });
    }
  }
})